PHLEGM v6 - NES / GUI control / FPS cumulative fix - 2026-10-02

- FPS overlay is host-only, lower-left inside the emulated viewport, GUI CHR font, 3x scale, 80% opaque full green over 50% opaque black.
- FPS numeric field is fixed to three integer positions and exactly two decimals (for example:   0.30,  59.94, 120.00), clamped at 999.99.
- Machine display invalidation is asynchronous; the emulation path does not force UpdateWindow/WM_PAINT.
- NES captures completed PPU state at vblank before status/NMI and defers 256x240 rasterization to host paint. Mapper-0 immutable CHR can be referenced directly while VRAM/palette/OAM are snapshotted without mirrored 16 KiB accessor walks.
- POWER ON and RESET do not synchronously rasterize a device-latched NES frame. They wait for the first completed post-command vblank snapshot. This also keeps cartridge insertion/replacement responsive because those operations power/reset the machine.
- TreeView double-click command dispatch hit-tests the actual clicked leaf instead of executing a stale prior selection.
- Command-tree rebuild discards invalid TreeView parent handles before rebuilding icon/media navigation, preventing stale MACHINE/PROGRAM/CARTRIDGE nodes after a state change.
- PRG/cart lazy media registries are rebuilt from fresh handles.

Static regression validators cover the NES frame latch, FPS overlay, GUI command targeting/control responsiveness, CHR file tools/session behavior, CHR remap, and installer layout. Native Windows FreeBASIC runtime validation remains required.
